Computational Vision
U. Minn. Psy 5036
Daniel Kersten
Lecture 17: Shape from shading, the Bas-relief ambiguity

Initialize

Off[General::spell1];
SetOptions[ArrayPlot,ColorFunction->"GrayTones",DataReversed->True,Frame->False,AspectRatio->Automatic,Mesh->False,PixelConstrained->True,ImageSize->Small];
SetOptions[ListPlot,ImageSize->Small];
SetOptions[Plot,ImageSize->Small];
SetOptions[Plot3D,ImageSize->Small,ColorFunction->"GrayTones"];
SetOptions[DensityPlot,ImageSize->Small,ColorFunction->GrayLevel];
<<VectorFieldPlots`
nbinfo=NotebookInformation[EvaluationNotebook[]];dir=("FileName"/.nbinfo/.FrontEnd`FileName[d_List,nam_,___]:>ToFileName[d]);

Outline

Last time

Inference of shape from shading--set in context of other cues to shape,

Perception of shape from shading

Introduce models for the inverse problem "shape from shading":

Inverting the generative model: L(pn,qn) =n.e= (({pn,qn,-1}.{pe,qe,-1})/(Sqrt[((pn^2)+(qn^2)+1)((pe^2)+(qe^2)+1)]))
Classic Ikeuchi & Horn solution:
	Assume light source direction is known. Constant reflectance. Known surface normals at the smooth occluding boundary.
	Find p's and q's such that (Subscript[E, D])+(Subscript[E, S])is small.
		Generative model -> data  cost function (Subscript[E, D])(p(x,y), q(x,y))
		Prior assumption of surface smoothness 
			(i.e. spatial second derivatives of p(x,y) and q(x,y) should be small) -> data-independent cost function (Subscript[E, S])(((((∇^2)p))^2), (∇^2)((q )^2)). 
	Equivalent to Bayes maximum a posteriori estimate of surface normals, with a smoothness prior.

Today

Perceptual ambiguities continued

Formal ambiguities seen by analyzing the generative model, the bas-relief transform

Solutions to the shape from shading problem for the linear case

Linear shape from shading

See Appendix for a solution using the Fourier Transform

Learning scene parameters from images

If one has available a set of images {(Subscript[L, i])}, together with a set of unit surface normals for each image {(Subscript[p, i]), (Subscript[q, i])} (e.g. derived from a set of range images), then one could do statistical regression to find a mapping. A linear model suggests that one could simply do a linear regression to find a map: L -> {p, q}, that might be a workable approximation to shape from shading from an  image L that was not in the training class {(Subscript[L, i])} . 
This was done by Knill and Kersten (1990). They used a neural network-like technique (Widrow-Hoff learning rule for weight or "synaptic" modification) to do regression learning "on-line", rather than in  "batch mode". This method was general and empirical in the sense, that one can imagine applying it to other scene-from-image problems (Kersten et al., 1988). How well  it works depends on the linear approximation. Non-linear neural networks and learning techniques such as error back-propagation can be used to find solutions for non-linear formulations (Lehky & Sejnowski, 1988). More recently, Freeman et al. (2000) have developed the idea of supervised learning of scene properties from images and applied it to super-resolution.

Shading & the bas-relief transform

Generalizing the simple lambertian generative model

The lambertian model thus far is pretty limiting. Even apart from the restriction to a certain type of uniform matte surface, it doesn't take into account attached or cast shadows or multiple light sources. 
An attached shadow occurs whenever the surface normal is at an angle greater than 90 degrees relative to the light source vector. The cosine of an oblique angle is negative, but we can't have negative light. If there is no ambient light, then an attached shadow region is black. So a better model would be:
	L = Max[n . e, 0]. 
We may have more than one light source, and since light intensity is additive, we can sum up all the contributions:
	L = (∑_i)Max[n . (Subscript[e, i]),0]

Note: A cast shadow boundary occurs on a receiving surface whenever another surface (or part of one) is between the receiving surface and the light source.

The bas-relief effect

An illustration of surface z-compression/light source slant ambiguity

The above top right and bottom right images are identical. Yet, the top right image is rendered from a surface shape with the profile shown on the top left, and the bottom right image is rendered with the elongated surface profile shown on the bottom left. The only difference in the rendering conditions for the right two images is that the light source slant is different.

The pictures below illustrate the bas-relief ambiguity. Belhumeur, P. N., Kriegman, D. J., & Yuille (1997) showed that there is a simple transformation of a surface (i.e. adding a slanted and tilted plane to a surface z(x,y) and a compression in depth) that induces (together with an albedo and illumination adjustment) a well-defined equivalence class of surfaces for a given image. z(x; y) =  λz(x; y)+ μx+ νy.
For each image of a lambertian surface z(x,y), there is an identical image of a bas-relief produced by a transformed light source.   Further this holds for both shaded and shadowed regions. And for the classical bas-relief in sculpture (no added slant, just compression), the image is insensitive to small motions and illumination changes.

Belhumeur, Kriegman and Yuille (1999) note: "Leonardo da Vinci, while comparing painting and sculpture, criticized the realism afforded by reliefs [11]: 'As far as light and shade are concerned low relief fails both as sculpture and as painting, because the shadows correspond to the low nature of the relief, as for example in the shadows of foreshortened objects, which will not exhibit the depth of those in painting or in sculpture in the round.' It is true that  when illuminated by the same light source  a relief surface ( λ < 1) and a surface "in the round" ( λ = 1) will cast different shadows. However, Leonardo's comment appears to overlook the fact that for any classical bas-relief transformation of the surface, there is a corresponding transformation of the light source direction such that the shadows are the same. This is not restricted to classical reliefs but, as we will show, applies equally to the greater set of generalized bas-relief transformations."

First surface

The code below shows how to take one surface (the "First" surface), and transform it to another one through the "bas-relief" transform. The bas-relief transform simply adds a slanted and tilted plane to the first surface. The inverse of the transpose of bas-relief transform can be used to adjust the light source direction so that the resulting image is the same as for the image of the first surface. 
We use the notation a[ ] for reflectance or albedo, and s for the light source direction vector.

Define First surface  bump

Use Mathematica's Plot3D to render the  bump.

bump[x_,y_]:=(1/4) (1-1/(1+Exp[-5 (Sqrt[x^2+y^2]-1)]));
p1[θ_]:=RotationTransform[θ,{0,0,1}][{0,20,0}];

Manipulate[g1=Plot3D[bump[x,y],{x,-3,3},{y,-3,3},PlotPoints->32,Mesh->True, ViewPoint->{1,1,1},AxesLabel->{"x","y","Height"},Ticks->False,AspectRatio->1,PlotRange->{{-3,3},{-3,3},{0,1}},Lighting->{{"Ambient",GrayLevel[.25]},{"Point",GrayLevel[.75],p1[lightdirection]}}],{lightdirection,0,2*Pi}]

Now we'll render it using the lambertian shading equation.

Calculate surface normals of first surface bump

nx[x_,y_]:= Evaluate[D[bump[x,y],y]];
ny[x_,y_]:= Evaluate[D[bump[x,y],x]];

Rendering specification for normals, light, reflectance first surface bump

Unit surface normals

Normalize the surface normal vector:

normbump[x_,y_]:={nx[x,y],ny[x,y],1}/Sqrt[nx[x,y]^2+ny[x,y]^2 + 1];

Point Light source

s={1,0,1};
s=s/Sqrt[s.s]

Plot point light source position

g1b=Plot3D[bump[x,y],{x,-3,3},{y,-3,3},PlotPoints->32,Mesh->True, ViewPoint->{1,1,1},AxesLabel->{"x","y","Height"},Ticks->False,AspectRatio->1,PlotRange->{{-4,4},{-4,4},{0,1}},PlotStyle->None];

g2=ListPointPlot3D[{s}, ViewPoint->{1,1,1},AxesLabel->{"x","y","Height"},Ticks->False,PlotStyle->{PointSize[.05],{RGBColor[1,1,0]}},AspectRatio->1,PlotRange->{{-4,4},{-4,4},{0,1}},ImageSize->Small];

Show[g1b,g2]

Reflectance

a[x_,y_]:=1;

Rendering equation for first surface bump

The lambertian model:

imagebump[x_,y_]:=a[x,y]*normbump[x,y].s;

Render first surface bump

DensityPlot[imagebump[x,y],{x,-3,3},{y,-3,3},Mesh->False, Frame->False,PlotPoints->32, PlotRange->{0,1}]

A second surface

Now let's specify an arbitrary bas-relief transform. z(x; y) =  λz(x; y)+ μx+ νy. You can play with the values of λ,μ,ν.

Bas relief transform, G : Second surface

basreliefG[λ_,μ_,ν_]:={{λ,0,-μ},{0,λ,-ν},{0,0,1}};

λ0=.25;μ0=.125;ν0=0;
 λ= λ0;μ=μ0;ν=ν0;
G = basreliefG[ λ,μ,ν];
iGt = Inverse[Transpose[G]];
brbump[x_,y_]:= λ*bump[x,y]+μ*x + ν*y;

basreliefnormbump[x_,y_]:=G.(a[x,y]*normbump[x,y]);
s2=iGt.s;
a2[x_,y_]:=Sqrt[basreliefnormbump[x,y].basreliefnormbump[x,y]];
normbump2[x_,y_]:=basreliefnormbump[x,y]/Sqrt[basreliefnormbump[x,y].basreliefnormbump[x,y]];

Plot new bas-relief surface height

(*brpointbump[x_,y_]:=G.{x,y,bump[x,y]};*)

Manipulate[
brbump2[x_,y_]:= λ*bump[x,y]+μ*x + ν*y;
Plot3D[brbump2[x,y],{x,-3,3},{y,-3,3},AxesLabel->{"x","y","z"},PlotPoints->32,Mesh->True,AspectRatio->1,PlotRange->{{-3,3},{-3,3},{-.5,.5}}],{{λ, λ0},0,10},{{μ,μ0},0,1},{{ν,ν0},0,1}]

Plot reflectance

DensityPlot[a2[x,y],{x,-3,3},{y,-3,3},PlotPoints->32,Mesh->False,PlotRange->{.9,1.1}]

Render the second bump with the compensated light source and albedo

imagebump2[x_,y_]:=a2[x,y]*normbump2[x,y].s2;
DensityPlot[imagebump2[x,y],{x,-3,3},{y,-3,3},Mesh->False, Frame->False,PlotPoints->32, PlotRange->{0,1}]

What happens if you use the old albedo/reflectance map?

Compare first and second surfaces

Make plot of light source direction vectors for new and old

units= Drop[s,{2}];(*units=units/Sqrt[units.units];*)
units2 = Drop[s2,{2}];(*units2=units2/Sqrt[units2.units2];*)
glight1=ListVectorFieldPlot[{ {{0,0},units2},{{0,0},units}},Ticks->False,Axes->False,PlotRange->{{-1.5,2.5},{-.25,1}}];

Plot surface height cross-sections of new and old

gheight=Plot[{brbump[x,0],bump[x,0]},{x,-2.5,2.5},PlotRange->{{-3,3},{-.25,1.15}},PlotStyle->{{Thickness[.005],RGBColor[1,0,0]},{Thickness[.005],RGBColor[0,0,1]}},Ticks->True,Axes->{False,True},Epilog->{{RGBColor[1,0,0],Arrow[{{0,0},units2}]},{RGBColor[0,0,1],Arrow[{{0,0},units}]}}]

Plot reflectance cross-sections for new and old

greflectance = Plot[{a2[x,0]-0.03,a[x,0]},{x,-1.5,1.5},PlotRange->{0,1.1},PlotStyle->{{Thickness[.005],RGBColor[1,0,0]},{Thickness[.005],RGBColor[0,0,1]}},Axes->{False,True}]

Try transforming the bump, slight direction using other values of λ, μ, ν.

Task analysis: "Shape for X"

Common shape representation vs. task-dependent?

Shape for object recognition

Shape for grasp

Bayesian approach to task analysis applied to shape from shading

Recall that earlier in the course we made the distinction between primary variables which we want to estimate explicitly and precisely, and secondary (or generic) variables that contribute to the image data, but which should be discounted. In shape from shading, we considered surface normals to be the primary variables, and the illumination to be the secondary variable. Suppose we don't know the light source direction AND we don't want to estimate it explicitly. Somehow we need to "discount" the illumination.
"Discount" in Bayesian terms means to integrate out their contributions to the posterior probability. So suppose that Sprim = {surface normals}, and Ssec = {light source direction}. Further, suppose we have a model that prescribes p(Sprim,Sec | I), where I is the image measurement (e.g. I = luminance L). Then if we can do the following integral,

we could then base our decision on p(Sprim | I), where the Ssec is no longer explicit, but its effects have gotten folded into the posterior p(Sprim | I). Bayes rule can be used to express the joint posterior in terms of the likelihood and the prior:

The lambertian shading equation is sufficient to determine the likelihood term. As we've seen, usually one assumes a known light source direction (Ssec), and then the prior is some measure that ranks the probability of surfaces based on how smooth or rought they are.
Freeman (1994) showed that this process of "integrating out" or "marginalization" can actually act to disambiguate the shape in the shape from shading problem. In other words, by assuming up front that illumination direction is a secondary variable, one can find solutions to the shape from shading problem with subtantially less reliance on a priori smoothness constraint. A task assumption can behave like a non-uniform prior.

Amibiguity reduction using task constraints: "genericity"

General viewpoint constraint (Lowe). Why is the figure on the left seen as a square rather than as a cube?

Cube: "Accidental" views

The default setting for viewpoint of a cube (below) illustrates another accidental view.

Manipulate[Graphics3D[{EdgeForm[{Thick,Blue}],FaceForm[{Pink,Opacity[0.0]}],Cuboid[]},Boxed->False,ViewPoint->{x,y,z},ImageSize->Tiny],{{x,10},0,20},{{y,10},0,1000},{{z,10},-1,20}]

Penrose triangle

Generic view or "general viewpoint constraint" is so strong that the human visual system can sometimes prefer impossible to possible objects (e.g. Penrose triangle, http://en.wikipedia.org/wiki/Penrose_triangle).

Is there a real object that corresponds to this image? Below, the photograph by Bruno Ernst on the left shows a reflection of a penrose triangle. The right panel shows an image from an object on google's  Sketchup database.

Can you rotate the 3D object below to find the accidental view? (http://sketchup.google.com/3dwarehouse/details?mid=9dc97890819b7ee1be9f99e917cf14f4)

Import["penrose.obj",ImageSize->Small]

General principle?

Perception's model of the explicit variables in a  scene should be robust to variations in the generic or secondary variables

"General illumination direction constraint": Freeman's solution to shape from shading

Shape & illumination direction ambiguity

Imagine wiggling the light source--which interpretation gives the smallest image variation? Freeman showed that the circularly symmetric bump interpretation gave the least variation, and in fact corresponds to the most probable interpretation.

Lambertian vs. shiny ambiguity

Let's look at an another example from Freeman. This time it is applied to resolving ambiguity about material reflectance (the primary variable), and surface orientation with respect to the viewer is the secondary variable.

Now imagine wiggling the orientation of the shape a little (or wiggle the light source). The biggest variations are shown in (g). Smaller variations are seen in the (d) images. Thus the more probable scene interpretation is (b, c), rather than (e,f). (Figure from: Mitsubishi Tech Report, TR93-15. http://www.merl.com/people/freeman/publications.html. 
See too: W. T. Freeman, Exploiting the generic viewpoint assumption, International Journal Computer Vision, 20 (3), 243-261, 1996.)

Freeman showed for several other problems (motion disambiguation) that marginalizing out the generic variable (secondary) can peaken the prior probability for the explicit (primary) variable, thereby constraining the shape (or other) estimates of the explicit variable. Further, he showed that under certain conditions, this marginalization is equivalent to the robustness principle above: 
Perception's model of the explicit variables in a  scene should be robust to variations in the generic or secondary variables.

See the Appendix, and  Kersten (1999) for an example from depth from shadows, and for the connection between the robustness principle and prior constraints.

More on local shape representation

Mechanisms relevant to human vision?

Shape recipes (see Freeman and Torralba, 2003).

Metric. vs. qualitative

Are certain shape attributes treated as qualitatively different categories by the human visual system? 
E.g. straight vs. curved contours? (e.g. Biederman, 1987;  Knill & Kersten, 1991)
Depth discrimination on surfaces: Todd & Reichel (1989), Reichel, Todd, J. T., Yilmaz, E. (1995)
Convex vs. concave surfaces? (e.g. cue integration and outliers).

View-point vs. object-centered: extrinsic vs. intrinsic shape descriptors

Curvature of a line.
Curvature of a surface. Principal curvatures. Gaussian curvature--elliptic (+), hyperbolic (-), cylindrical & flat points (0).

Next time

Introduction to motion perception

Appendix

A linear solution to the inverse problem for lambertian shape from shading (Pentland)

Recall from last time

Last time we derived a linear approximation to the lambertian shading model, L= n.e. The image luminance is given by 
L(pn,qn) =n.e= (({pn,qn,-1}.{pe,qe,-1})/(Sqrt[((pn^2)+(qn^2)+1)((pe^2)+(qe^2)+1)])), 
where n={pn,qn,-1}/(Sqrt[((pn^2)+(qn^2)+1)]) and e={pe,qe,-1}/(Sqrt[(pe^2)+(qe^2)+1)]) are the unit surface normal vector and illumination vectors respectively. 
Using a Taylor series expansion about {pn,qn}={0,0}, we were able to derive a linear approximation to the shading equation.

Lmodel[pn_,qn_,pe_,qe_]:= ({pn,qn,-1}/Sqrt[pn^2+qn^2 + 1]).({pe,qe,-1}/Sqrt[pe^2+qe^2 + 1]);
Series[Lmodel[pn,qn,pe,qe], {pn, 0, 1}, {qn, 0, 1}]

Lapprxom[x_,y_] := (1+qe*qn[x,y] + pe*pn[x,y])/Sqrt[1+pe^2 + qe^2];

Using the fourier transform to estimate surface depth z, from image intensity L

A standard result from fourier transform theory is, given g(x) and its fourier transform (Subscript[F, g])((Subscript[f, x])), then it is easy to write down the fourier transform of the derivative of g(x). It is just the fourier transform of g(x) times 2πifx. So, FourierTransform[(dg/dx)] = 2πi(Subscript[f, x]) (Subscript[F, g])((Subscript[f, x])).(cf. Gaskill).
Let z(x,y) be any differentiable function.  Let (Subscript[F, z])[(Subscript[f, x]),(Subscript[f, y])] be the fourier transform of z, which can be written in terms of the (complex) amplitude and phases as: 
a[fx,fy] (e^(iϕ(fx,fy))). 
Using the above result, we have:

Fp[fx,fy] = 2π i fx a(fx,fy)  (e^(i(ϕ(fx,fy)))) and Fq[fx,fy] = 2π i fy a(fx,fy)  (e^(i(ϕ(fx,fy)))).

Let's simplify L = (1+qe*qn[x,y] + pe*pn[x,y])/Sqrt[1+pe^2 + qe^2] by ignoring the constant term 1.

Let's express the direction of the light source in terms of tilt and slant. Then τ=(tan^(-1))((Subscript[q, e])/(Subscript[p, e])), and σ = (tan^(-1))((Sqrt[((Subscript[q, e])^2)+((Subscript[p, e])^2)])). 
So we can write L = cosσ + p sinσ + q sinτ sin σ.  Let the fourier transform of the image function L be: (Subscript[a, L])[fx,fy] (e^((Subscript[iϕ, L])(fx,fy))). With a little algebra, one can show that:

Fz(fx,fy) = (((Subscript[a, L])(fx,fy)(e^(i((Subscript[ϕ, L])(fx,fy)-π/2))))/(2π sinσ fx(cosfy cosτ + sinfy sinτ)))

The solution requires a known point light source (τ,σ),  constant reflectance. Further the linear approximation is good for small p's and q's --i.e. for shallow bas-relief like shapes.
The inverse fourier transform provides an estimate of the surface depth z. Note that if we ignore the constant term in image luminance, we can replace z-> z + k1x + k2 y + k3, we obtain the same solution. 
Shortly, we will look at recent results that show how general shape ambiguity is resolved when the light source is unknown.

Write a program to implement and test the above shape from shading method

Applying the generic "view" principle to generic "light direction"

Excerpt from Kersten (1999)  for the connection between the robustness principle and prior constraints.)

References

Belhumeur, P. N., Kriegman, D. J., & Yuille, A. (1997). The Bas-Relief Ambiguity. Paper presented at the IEEE Conf. on Computer Vision and Pattern Recognition.
Belhumeur PN, Kriegman D, Yuille A (1999) The Bas-Relief Ambiguity. Int'l Journal of Computer Vision 35:33-44.
Biederman I (1987) Recognition-by-components: A theory of human image understanding. Psychological Review 94:115-147.
Brady, M., & Yuille, A. (1983). An Extremum Principle for Shape from Contour. Proceedings IJCAI, 969-972.
Bülthoff, H. H., & Yuille, A. (1990). Shape-from-X: Psychophysics and computation. Proceedings of the SPIE, 1383, 165-172.
Dupuis, P., & Oliensis, J. (1994). An optimal control formulation and related numerical methods for a problem in shape reconstruction. The Annals of Applied Probability, 4(No, 2), 287-346.
Freeman, W. T. (1994). The generic viewpoint assumption in a framework for visual perception. Nature, 368(7 April 1994), 542-545.
Freeman WT, Pasztor EC, Carmichael OT (2000) Learning low-level vision. Intl J Computer Vision 40:25-47.
Freeman, William T. and Torralba Antonio, (2003) Shape Recipes: Scene Representations that Refer to the Image in Advances in Neural Information Processing Systems 15 (NIPS), MIT Press, 2003 (ftp://publications.ai.mit.edu/ai-publications/2002/AIM-2002-019.pdf)
Gray, Alfred. Modern Differential Geometry of Curves and Surfaces with Mathematica, Second Edition. (CRC Press, 1997) (http://store.wolfram.com/view/ISBN0849371643/?39FED89E-38F0)
Horn, B., & Brooks, M. J. (1989). Shape from shading. Cambridge, Mass.: MIT Press.
Ikeuchi, K., & Horn, B. K. P. (1981). Numerical shape from shading and  occluding boundaries. Art. Intel., 17,, 141-184.
Kersten, D., O'Toole, A. J., Sereno, M. E., Knill, D. C., & Anderson, J. A. (1987). Associative learning of scene parameters from images. Appl. Opt., 26, 4999-5006.
Kersten, D. (1999) High-level vision as statistical inference.  The New Cognitive Neurosciences, 2nd Edition, Gazzaniga (Ed.). MIT Press. (pdf preprint, http://gandalf.psych.umn.edu/~kersten/kersten-lab/papers/CogNeuro98-final.pdf)
Knill, D. C., & Kersten, D. (1990). Learning a near-optimal estimator for surface shape from shading. CVGIP, 50(1), 75-100.
Knill DC, Kersten DK (1991) Ideal Perceptual Observers for  Computation, Psychophysics, and Neural Networks. In: Pattern Recognition by Man and Machine (Watt RJ, ed), pp 83-97, chapter 87: MacMillan Press.
Knill, D. C. (1992). Perception of surface contours and surface shape: from computation to psychophysics. J Opt Soc Am [A], 9(9), 1449-1464.
Koenderink, J. J. (1998). Pictorial relief. Philosophical Transactions of the Royal Society of London Series a-Mathematical Physical and Engineering Sciences, 356(1740), 1071-1085.
Koenderink, J. J. (1990). Solid Shape. Cambridge, MA: MIT Press.
Koenderink, J. J., van Doorn, A. J., & Kappers, A. M. (1992). Surface perception in pictures. Perception & Psychophysics, 5, 487-496.
Koenderink, J.-J., Kappers, A., & van Doorn, A. (1992). Local Operations: The Embodiment of Geometry. Artificial and Biological Vision Systems.
Langer, M. S., & Zucker, S. W. (1994). Shape from Shading on a Cloudy Day. Journal of the Optical Society of America A, 11(2), 467-478.
Lehky, S. R., & Sejnowski, T. J. (1988). Network model of shape-from-shading: neural function arises from both receptive and projective fields. Nature, 333, 452-454.
Mamassian, P., Kersten, D., & Knill, D. C. (1996). Categorical local-shape perception. Perception, 25(1), 95-107.
Mamassian  P & Kersten D. (1996).  Illumination, shading and the perception of local orientation. Vision Research., 36(15), 2351-2367.
Mingolla, E., & Todd, J. T. (1986). Perception of Solid Shape from Shading. Biological Cybernetics, 53, 137-151.
Oliensis, J. (1991). Uniqueness in Shape From Shading. The International Journal of Computer Vision, 6(2),  75-104.
Pentland, A. P. (1990). Linear shape from shading. International Journal of Computer Vision, 4, 153-162.
Pentland, A. P. (1988). Shape Information from Shading: A Theory About Human Perception.
TR-103. Paper presented at the M.I.T. Media Lab Vision Sciences.
Reichel, F. D., Todd, J. T., & Yilmaz, E. (1995). Visual-Discrimination of Local Surface Depth and Orientation. Perception & Psychophysics, 57(8), 1233-1240.
Todd, J. T., & Mingolla, E. (1983). Perception of Surface Curvature and Direction of Illumination from Patterns of Shading. Journal of Experimental Psychology: Human Perception & Performance, 9(4), 583-595.
Todd JT, Reichel FD (1989) Ordinal structure in the visual perception and cognition of smoothly curved surfaces. Psychol Rev 96:643-657.
Todd, J. T., Norman, J. F., Koenderink, J. J., & Kappers, A. M. L. (1997). Effects of texture, illumination, and surface reflectance on stereoscopic shape perception. Perception, 26(7), 807-822.